from langchain_core.tools import tool
from typing import Annotated

# 提取实际参数
def get_parameter(input_string: str) -> str:
    # Step 1: 仅保留最后一个“=”或“:”之后的部分
    if '=' in input_string or ':' in input_string:
        last_equal_idx = input_string.rfind('=')
        last_colon_idx = input_string.rfind(':')
        # 获取最后一个“=”或“:”之后的子字符串，以两者中最后出现者为准
        if last_equal_idx > last_colon_idx:
            input_string = input_string[last_equal_idx + 1:]
        else:
            input_string = input_string[last_colon_idx + 1:]
    result = input_string

    # Step 2: 提取最后一对引号内的子字符串
    if '"' in input_string or "'" in input_string:
        last_double_quote_idx = input_string.rfind('"')
        last_single_quote_idx = input_string.rfind("'")
        if last_double_quote_idx > last_single_quote_idx:
            # 提取最后一对双引号之间的文本
            input_string_part = input_string[:last_double_quote_idx]
            result = input_string_part.split('"')[-1]
        else:
            # 提取最后一对单引号之间的文本
            input_string_part = input_string[:last_single_quote_idx]
            result = input_string_part.split("'")[-1]

    # Step 3: 去除前导和尾随的空格、制表符和换行符
    result = result.strip()

    # 返回处理后的字符串
    return result


# 取得当前日期
from datetime import datetime
@tool
def get_current_date(input:str = None)->str:
    """
    取得当天日期(今天日期)，以YYYY年MM月DD日的形式返回
    """
    # 获取当前日期
    now = datetime.now()
    # 按照 "2023年09月04日" 格式进行格式化
    formatted_date = now.strftime("%Y年%m月%d日")
    return formatted_date

if __name__ == '__main__':
    test_input_v2 = """ key1: value1 = ' some text inside ' other content 'final text'
     ABC """
    processed_string_v2 = get_parameter(test_input_v2)
    print(processed_string_v2)